package com.example.cloudsentinel.common;

import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Slf4j
@Component
public class CommonFlowRules {

    /**
     * 配置注解的 资源
     */
    public static final String ANNOTATION_RESOURCE_NAME = "testAspect";

    /**
     * 配置 api形式的 资源
     */
    public static final String API_RESOURCE_NAME = "API-SOURCE";


    static {
//        log.info("加载配置信息---------------------------");
//        List<FlowRule> rules = FlowRuleManager.getRules();
//        //定义规则列表
//
//
//
//        //定义 基于注解的配置
//        FlowRule rule = new FlowRule();
//        //定义受保护的资源
//        rule.setResource(ANNOTATION_RESOURCE_NAME);
//        //设置流控规则 QPS
//        rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
//        //设置受保护的资源阈值
//        rule.setCount(1);
//        rules.add(rule);
//
//
//        //定义 api资源的 限流
//        FlowRule apiRule = new FlowRule();
//        //定义受保护的资源
//        apiRule.setResource(API_RESOURCE_NAME);
//        //设置流控规则 QPS
//        apiRule.setGrade(RuleConstant.FLOW_GRADE_QPS);
//        //设置受保护的资源阈值
//        apiRule.setCount(1);
//        rules.add(apiRule);
//
//
////        // 这里需要注意 这个方法会 替换掉 以前的规则
//        FlowRuleManager.loadRules(rules);
    }
}
